The present invention relates to techniques for the encoding of data including character, voice, animation, still image, program, or other data, and to techniques for the decoding of these kinds of encoded data.
For software distribution, a method of encrypting character, voice, animation, still image, program or other data and storing this data on floppy disks, CD-ROMs, magneto-optical disks (MO), or other media, and selling these media, may be employed, or a method of encoding the data and delivering the data to users through a communications circuit, as well as other methods, may be employed.
In previous encoding methods of this kind, the provider has, for example, encoded a program with a single algorithm and provided it to the user, and the user has performed the decoding operation using a so-called xe2x80x9ckeyxe2x80x9d also provided to the user.
However, when the key possessed by the user is obtained by a wrongful user, there is a fear that a copy will be created based on the results of a decoding using the wrongfully obtained key. If a large amount of these copies are circulated, the provider will be forced to incur a substantial loss.
The present invention has been created bearing this problem in mind, by noting that many types of software have a special characteristic of under going an upgrade after only a brief period of time. The present invention provides an encoding combination method whereby the encoding algorithm may be changed periodically or for each software upgrade.
The present invention employs two or more basic encoding algorithms for encoding software. Conversely, for software decoding processing (the software encoding apparatus), basic decoding algorithms are prepared that correspond to these two or more encoding algorithms. Then, the software encoding apparatus transfers, along with the encoded software combination identification information identifying the encoded algorithms used for encoding to the software decoding means (the software decoding apparatus).
The above-mentioned basic encoding algorithm performs at a minimum the processing necessary to convert input data into random like data. For example, convert input data into rearranged data or replaced data. In addition, exclusive-OR of the input data and other random data can be output.
Based on the previously mentioned algorithm combination identification information, the software decoding means selects basic decoding algorithms from among those that it possesses, and decodes the previously mentioned encoded software.
Within the previously mentioned means, when the software is input into the software encoding apparatus, it is encoded with a selected basic algorithm combination (for example, A1 and A3). Software that has been encoded in this way is distributed to the user in the form of a CD-ROM or via a communications circuit. The user decodes this encoded software with a decoding apparatus that he or she possesses. At this time, the user decodes the relevant encoded software based on or responsive to the encoding combination identification information (for example, A1¦ ¦A3) used by the encoding apparatus. This combination information may be delivered to the user on the same medium as the encoded software, or on a different medium, or it may be communicated to the user along with non-illustrated key information (K).
Moreover, the combination identification information may be encoded by using an algorithm.
Each of the individual algorithms are relatively easy to analyze. However, the combining of these algorithms increases the difficulty of analysis. Therefore, even though each individual algorithm may easily be grasped on its own or separately, since there is an enormous amount of possible algorithm combinations, it would require significant time and effort to analyze a combination of algorithms, making such an analysis difficult in reality. Even if there were to be a possibility of such an analysis occurring, if for every software upgrade, the software is encoded with a new combination of algorithms, the most recent software upgrade cycle will be sufficient to cover for such a possibility.
In fact, if hackers should attempt to decode the combinations of the encoded algorithms has such a large number they will likely abandon the attempt.